/*--------------------- 
作者：qr_ljj 
来源：CSDN 
原文：https://blog.csdn.net/qr_ljj/article/details/80671068 
版权声明：本文为博主原创文章，转载请附上博文链接！*/
module rx_bps_module
(
    clk1, rst1,
	 Count_Sig, 
	 BPS_CLK
);

input clk1;
input rst1;			//复位信号 RSTn,当RSTn=0，系统复位
input Count_Sig;	//串口数据帧开始确认信号：Count_Sig,当 Count_Sig=1，表示串口输入帧开始时刻，持续一个系统时钟周期
output BPS_CLK;	//BPS_CLK，当计数至每一位的中间位置，BPS_CLK=1，提示信号采集时间到，否则不进行信号采集

reg[12:0] Count_BPS;
	 
always @ ( posedge clk1 or negedge rst1 )
	if( !rst1 )
		Count_BPS <= 13'd0;
	else if( Count_BPS == 13'd5207 )
		Count_BPS <= 13'd0;
	else if( Count_Sig )
		Count_BPS <= Count_BPS + 1'b1;
	else
		Count_BPS <= 13'd0;

assign BPS_CLK = ( Count_BPS == 12'd2604 ) ? 1'b1 : 1'b0;

endmodule 
